/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsISimpleEnumerator;
interface nsIX509Cert;

%{C++
typedef struct CERTCertListStr CERTCertList;
%}
[ptr] native CERTCertListPtr(CERTCertList);

[scriptable, uuid(ae74cda5-cd2f-473f-96f5-f0b7fff62c68)]
interface nsIX509CertList : nsISupports {
   void addCert(in nsIX509Cert cert);
   void deleteCert(in nsIX509Cert cert);
   nsISimpleEnumerator getEnumerator();

   /**
    * Returns the raw, backing cert list.
    * Must be called only from functions where an nsNSSShutDownPreventionLock
    * has been acquired.
    */
   [notxpcom, noscript] CERTCertListPtr getRawCertList();

   /**
    * Test whether two certificate list instances represent the same
    * certificate list.
    *
    * @return Whether the certificate lists are equal
    */
   boolean equals(in nsIX509CertList other);

};

%{C++

#define NS_X509CERTLIST_CID { /* 959fb165-6517-487f-ab9b-d8913be53197 */  \
    0x959fb165,                                                           \
    0x6517,                                                               \
    0x487f,                                                               \
    {0xab, 0x9b, 0xd8, 0x91, 0x3b, 0xe5, 0x31, 0x97}                      \
  }

#define NS_X509CERTLIST_CONTRACTID "@mozilla.org/security/x509certlist;1"

%}
